Data storage devices typically access data in fixed sized data blocks. When a client is using data in a size smaller than a full data block, it must still access the full block. Providing access to data only in fixed sized blocks can be an inefficient use of system resources.
Transferring full data blocks when less than the full data blocks are being used increases traffic on data buses, which typically have limited bandwidth. Processing full data blocks can increase processing overhead for host devices and for clients using the data. Transferring and processing full data blocks when less than full data blocks are being used also consumes more host memory than would otherwise be used.
Even when a client is using full data blocks, processing large amounts of data can also be taxing on system resources. As data is processed, it is typically transferred on a data bus, stored in host memory, and processed using a host processor, all consuming resources of a host device.